package com.briup.day14;

public class ConstructorDemo {

	// 证明：创建子类对象的时候会先调用父类的构造器
	public static void main(String[] args) {
		// 创建一个男性大学生对象
		//new MaleUniversityStudent(); 
	}
	
}

class Humanbeing { // 人类
	
	private String name;	// 姓名
	private String gender;	// 性别
	private int age;		// 年龄
	
	/*
	 * 在父类中，如果不存在无参构造器，只有一个全参构造器，
	 * 就代表设定了一种规则：Humanbeing类对象只要创建，
	 * 就必须提供name、gender、age三个值
	 * 子类创建对象会先调用父类的构造器，
	 * 所以创建子类对象也需要提供name、gender、age。
	 * 如果实在不想提供，只能传入一些默认值。
	 */
	public Humanbeing(String name, String gender, int age) {
		this.name = name;
		this.gender = gender;
		this.age = age;
	}
	
	/*public Humanbeing() {
		super(); // Object()
		System.out.println("人类.......");
	}*/
}

class Student extends Humanbeing { // 学生类
	private int stuId; // 学号
	
	public Student() {
		this(0);
	}
	public Student(int stuId) {
		this(stuId, null, null, 0);
	}
	public Student(String name, String gender, int age) {
		this(0, name, gender, age);
	}
	public Student(int stuId, String name, String gender, int age) {
		super(name, gender, age);
		this.stuId = stuId;
	}
	
}



class UniversityStudent extends Student { // 大学生类
	public UniversityStudent() {
		super();
		System.out.println("大学生......");
	}
}

class MaleUniversityStudent extends UniversityStudent { // 男性大学生
	public MaleUniversityStudent() {
		super();
		System.out.println("男性大学生......");
	}
}







